////定义了一个包
package com.sec04

/**
  * 可以通过设定 private 设置包的可见性。
  */
//定义了一个包对象
package object people {
  val defaultName = "John Q. Public"
}

object Sec04Main extends App {
  val john = new com.sec04.people.Person
  println(john.description)
}

package people{
  //person类前面有一个private的修饰，[sec04]发现就是上面的包名，说明
  //person这个类是只对sec04这个包可见的，因为是私有的
  //同理在sec04下面的包里面也是可见的
  private[sec04] class Person {
    var name = defaultName // A constant from the package
    //同理可以把可见性定义到变量或者方法里面
    private[sec04] def description = "A person with name " + name
    private[people] def description2 = "A person with name " + name
  }
}


